/**
  * Author: Mei
  * Date: 2020-12-17 11:29
  * Description: 
  *
  */
#include<iostream>
#include<vector>
#include <list>
#include<algorithm>
#include<functional>

using namespace std;
int list_test()
{
    list<int> List;
    int i,item,key;

    for(i=0;i<10;i++)
    {
        cin>>item;
        List.push_front(item);
    }

    cin>>key;
    List.remove(key);

    list<int>::iterator ite=List.begin();


    while(ite!=List.end())
    {
        cout<<*ite<<" ";
        ite++;
    }
    /**
     *  test_list.erase(test_list_it);每次做erase时都有可能使迭代器失效，
     *  test_list_it++就发生错误了。可以参见effective stl一书。
     *  所有容器做erase操作时都有可能使迭代器失效。 test_list.erase(test_list_it++);
     *
     * 执行结果 remove()函数作为列表list容器的成员函数，可以从列表容器中删除与x相等的元素，
     *  同时会减小列表容器的大小，其减小的数量等于被删除的元素的个数，原型如下：
     *  1 2 3 4 5 6 7 8 5 5
        5
        8 7 6 4 3 2 1
     */
    return 0;
}
int main() {
    list_test();
    //vector<char> vec;
    //vector<int> vec{32, 54, 865, 44, 77, 976, 123};
    //vector<int>::iterator ite;
    //vector<int>::iterator p;
    //vec.push_back('A');
    //vec.push_back('A');
    //vec.push_back('A');
    //vec.push_back('B');
    //vec.push_back('B');
    //vec.push_back('B');
    //vec.push_back('B');
    //vec.push_back('A');
    //vec.push_back('A');
    //vec.push_back('A');
    //p = remove_if(vec.begin(), vec.end(), [](int n) -> bool{
    //    return n > 30 && n < 70;
    //});
    ////p=vec.erase(remove(vec.begin(),vec.end(),'A'),vec.end());
    //cout << vec.end() - p << endl;
    ////cout << *(p+3) << endl;
    //for (ite = vec.begin(); ite != vec.end(); ++ite)
    //    cout << *ite << " ";
    return 0;
}
